<?php

class CmsHelpers {

   /**
    * @param Page paramsMap[page]
    */
   public static function subpages($paramsMap)
   {
      $page = NULL;
      if ( array_key_exists('page', $paramsMap) ) // Si no me lo pasan, tengo que poner el actual.
         $page = $paramsMap['page'];
      else
         throw new Exception("El parametro 'page' es obligatorio y no esta presente. " . __FILE__ . " " . __LINE__);

      $out = '<div class="subpages">';
      $out .= 'Subpaginas: '; // TODO: I18N
      foreach ($page->getSubpages() as $subpage)
      {
         // Como se pueden eliminar paginas y mantenerse en las subpages, debo preguntar si no esta eliminada para mostrarla en el menu.
         if (!$subpage->getDeleted())
         {
            $out .= h('link', array('controller'=>'cms', 'action'=>'displayPage', 'pageId'=>$subpage->getId(), 'body'=>$subpage->getName()));
            $out .= ' | ';
         }
      }
      $out = substr($out, 0, -3);
      $out .= '</div>';
      
      return $out;
   }
   
   /**
    * Muestra el nombre de la pagina y de todos sus ancestros.
    * @param Page paramsMap[page]
    */
   public static function navbar($paramsMap)
   {
      $page = NULL;
      if ( array_key_exists('page', $paramsMap) ) // Si no me lo pasan, tengo que poner el actual.
         $page = $paramsMap['page'];
      else
         throw new Exception("El parametro 'page' es obligatorio y no esta presente. " . __FILE__ . " " . __LINE__);
      
      
      $out = '<div class="navbar">';
      $ps = h('link', array('controller'=>'cms', 'action'=>'displayPage', 'pageId'=>$page->getId(), 'body'=>$page->getName(), 'attrs'=>array('class'=>'active')));
      while (($page = $page->getParent()) != NULL)
      {
         $ps = h('link', array('controller'=>'cms', 'action'=>'displayPage', 'pageId'=>$page->getId(), 'body'=>$page->getName())) .' &gt; ' . $ps;
      }
      
      $out .= $ps . '</div>';
      return $out;
   }
}
?>